package com.br.produto;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

public class ProdutoDAOHibernate implements ProdutoDAO {

	private Session sessao;

	public void setSessao(Session sessao) {
		this.sessao = sessao;
	}

	@Override
	public void salvar(Produto produto) {
		this.sessao.save(produto);

	}

	@Override
	public void atualizar(Produto produto) {
		this.sessao.update(produto);

	}

	@Override
	public void excluir(Produto produto) {
		this.sessao.delete(produto);

	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Produto> listar() {

		return this.sessao.createCriteria(Produto.class).list();
	}

	@Override
	public Produto carregar(Integer codigo) {

		return (Produto) this.sessao.get(Produto.class, codigo);
	}

	@Override
	public Produto pesquisarPorDescricao(String nome) {

		String sql = "from Produto c where c.nome like :nome";
		Query consulta = this.sessao.createQuery(sql);
		consulta.setString("nome", "%" + nome + "%");
		return (Produto) consulta.uniqueResult();

	}

}
